#ifndef CARRITO_H_
#define CARRITO_H_
#include "Elemento.h"
#include "Rueda.h"
#include "../fisica/CarritoFisica.h"

class Carrito: public Elemento {
private:

	double posSogaIzqX;
	double posSogaIzqY;
	Elemento* sogaIzqUnida;
	Elemento* sogaDerUnida;
	double posSogaDerX;
	double posSogaDerY;
	bool sogaIzqInicial;
	bool sogaDerInicial;
	Rueda* ruedaIzquierda;
	Rueda* ruedaDerecha;
	double xAnterior;

public:
	Carrito(double x, double y, double ancho, double alto, string pathImagen);
	void jointearElemento(b2World* world);
	virtual ~Carrito();
	void rotar(double angulo);
	bool aceptaSoga();
	void eliminarSoga(Elemento* soga);
	void agregarSogaInicial(Elemento* soga);
	void agregarSogaFinal(Elemento* soga);
	void mover(double centroX,double centroY);
	int seSuperpone(Elemento* elemento);
	void eliminarReferencias(list<Elemento*>* elementosCanvas);
	void actualizarValoresFisicos();
	pair<double,double> obtenerPuntoAnclaje();
	void dibujar(double x, double y, double ancho, double alto,SDL_Renderer* renderer);
	bool esAnimable();

	int haySogaIzqUnida();
	int haySogaDerUnida();
	bool esBasico();
	void activarSogaPosInicial();
	void activarSogaPosFinal();
	bool sogaEnPosInicial();
	bool sogaEnPosFinal();
	void actualizarReferencias();
	pair<Elemento*,Elemento*> obtenerExtremos();
	void setSogaInicial(Elemento*);
	void setSogaFinal(Elemento*);
	pair<double,double> obtenerPosicionSoga(int);
};

#endif /* CARRITO_H_ */
